package com.ubxtech.web.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

/**
 * @author Victor.Xiao
 * @since 2022-03-29 11:50
 **/
@Data
@ConfigurationProperties(prefix = AuthProperties.PREFIX)
public class AuthProperties {
    public static final String PREFIX = "ubxtech.auth";
    /**
     * 鉴权类型,参考 AuthTypeEnum
    */
    private String type;

    /**
     * 为了防止网关和内部服务同时配置跨域,导致的双跨域,会出现  has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values
     */
    private Integer accessOrigin=0;
    /**
     * 鉴权类型为express时可以自由组合鉴权类型,填写一个javascript表达式,比如 cloud || sign ,比如(local && sign) || cloud
     */
    private String express="none";
    /**
     * 如果是签名模式,是否校验签名
     */
    private Integer checkFlag=1;
    /**
     * 是否要本地接口鉴权,设计这个配置是想在网关就直接鉴权
     */
    private Integer permissionFlag=0;
    /**
     * oss文件url的前缀,如果配置则所有带ResponseAppendOssPrefix注解的都会拼接url
     */
    private String ossPrefixUrl ="https://crms.ubtrobot.com/minio-storage";
    /**
     * 签名校验配置
    */
    private String appSecretsStr;
    /**
     * 统一接口返回所需要的秘钥
     */
    private String responseSecret = "1234512345123450";
    /**
     * 排除掉url校验
     */
    private List<String> excludePath;
    /**
     * 排除掉日志打印
     */
    private List<String> printLogExcludePath;

    /**
     * 系统启动时区,例如:GMT,GMT+8,GMT-6等等 默认系统,在springboot 的启动类中设置,日志中的时间也会改变
     */
    private String sysTimeZone="";
    /**
     * 如果locale是dynamic的格式
     */
    private String timeFormat="yyyy-MM-dd HH:mm:ss";
    /**
     * 是否动态转化时区时间,dynamic:转换 static
     */
    private String locale = "static";

    /**
     * i18n默认语言
     * en-US,en =====英文 (美国) Locale.getDefault()不配置user.language 和user.country时 , 得到的默认就是英文
     * zh-HK,zh =====中文 (香港)
     * fr-FR,fr =====法文 (法国)
     * zh-CN,zh =====中文 (中国)
     */
    private String acceptLanguage;

    /** 是否允许多客户端登录,目前在网关鉴权需要实现服务支持,0:只能有一个种,1:允许pc,安卓,iphone各登录一个,详见UserAgentSystemEnum,2:不限制 */
    private Integer multiLoginClientType=1;

}
